//给定一个数组 nums 和滑动窗口的大小 k，请找出所有滑动窗口里的最大值。 
//
// 示例: 
//
// 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3
//输出: [3,3,5,5,6,7] 
//解释: 
//
//  滑动窗口的位置                最大值
//---------------               -----
//[1  3  -1] -3  5  3  6  7       3
// 1 [3  -1  -3] 5  3  6  7       3
// 1  3 [-1  -3  5] 3  6  7       5
// 1  3  -1 [-3  5  3] 6  7       5
// 1  3  -1  -3 [5  3  6] 7       6
// 1  3  -1  -3  5 [3  6  7]      7 
//
// 
//
// 提示： 
//
// 你可以假设 k 总是有效的，在输入数组不为空的情况下，1 ≤ k ≤ 输入数组的大小。 
//
// 注意：本题与主站 239 题相同：https://leetcode-cn.com/problems/sliding-window-maximum/ 
// Related Topics 队列 Sliding Window 
// 👍 168 👎 0
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public:
    int MyPush(int start,vector<int>& nums,int k){
        int max = -9999;
        if (start <= nums.size()-k) {
            for (int i = start; i < k+start; i++) {
                if (max < nums[i]) {
                    max = nums[i];
                }
            }
        }
        return max;
    }

    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        vector<int> res;
        if (nums.empty()){
            return res;
        }
        for (int j = 0; j <= nums.size()-k; ++j) {
            res.push_back(MyPush(j,nums,k));
        }
        return res;
    }
};
//leetcode submit region end(Prohibit modification and deletion)
